Reliable storage and the utilization of high availability storage arrays employing disk drives as the storage media are becoming evermore popular as data is stored electronically. Data is stored to, and retrieved from, an array of disks on the behalf of one or more host computer systems by storage controllers. A major requirement of storage systems is the transfer and retrieval of data without error. Thus, storage systems and storage array controllers employ error detection and recovery algorithms to ensure data integrity.
Known to the art are Redundant Array of Independent Disks (RAID) parity schemes which may be utilized to provide error detection during the transfer and retrieval of data across a storage system. In addition to RAID parity schemes, a storage array controller may utilize some sort of error and detection code to provide additional path and/or drive anomaly protection. Data path and drive anomaly protection schemes typically employ some form of metadata that is stored on disk drives along with user data. This may require that the metadata is managed on a per input/output (I/O) basis. Further, each time user data is read from or written to media, the accompanying metadata must also be read from or written to media.
An approach known to the art for managing metadata involves interleaving metadata with the user data utilizing a 512-byte sector format. Generally, metadata is interleaved with the user data at fixed intervals, for example, a segment of user data may be followed by a sector of metadata. Typically, the size of the user data block in each interval matches the size of the cache block used to manage a storage controller's data cache. This allows the user data and the metadata for a given cache block to be picked up with a single read directed to that cache block.
A drawback associated with interleaving user data with metadata on a cache block basis is the impracticality associated with changing a storage controller's cache block size once a volume is created. In normal operation, a storage controller may change its cache block size to optimize application performance without impacting data layout on the drives. However, the data layout on the drives must be altered if the size of the cache block is changed when metadata is interleaved with user data. This temporarily decreases application performance and the overall performance of a storage controller while the data layout is being reconfigured. Consequently, a method and system of associating metadata with user data in a manner that allows metadata management to be independent of a storage controller's cache block size is necessary.